package educar.usuario;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import educar.login.Session;
import educar.principal.IController;
import educar.principal.IView;
import educar.db.*;

public class CrearUsuarioController{
	private static JPA jpa = new JPA();

	public static boolean existe (String nomUs) {
		try {
			Usuario us = getUsuario(nomUs);
			return true;
		} catch (UsuarioNoEncontrado ex) {
			return false;
		}
	}
	
	/**
	 * 
	 * @param usuario
	 * @return
	 */
	public static boolean save(Usuario usuario) {
		try {
			getUsuario(usuario.getNomUs());
			return false;
		} catch (UsuarioNoEncontrado e1) {
			String[] columns = { "username","password", "role"};

			PreparedStatement stm = jpa.newRecord(DbConnection.bd+".users", columns);

			try {
				
				stm.setString(1, usuario.getNomUs());
				stm.setString(2, usuario.getConUs());
				stm.setString(3, usuario.getRolUs());
			} catch (SQLException e) {
				e.printStackTrace();
				return false;
			}

			jpa.create(stm);
			return true;
		}
	}
	
	/**
	 * 
	 * @param usuario
	 */
	public void destroy(Usuario usuario) {
		jpa.destroy("users", "username", usuario.getNomUs());
	}
	
	/**
	 * 
	 * @param nomUs
	 * @return
	 * @throws UsuarioNoEncontrado
	 */
	public static Usuario getUsuario (String nomUs) throws UsuarioNoEncontrado {
		ResultSet rs = null;
		Usuario u = null;

		rs = jpa.getByField("users", "username", nomUs);
		
		try {
			if (rs.next()) {
				u = new Usuario (rs.getString(2), rs.getString(3), rs.getString(4));
			} else {
				throw new UsuarioNoEncontrado();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return u;
	}

}